Apache POI আপনাকে Excel ডকুমেন্টে Charts বা গ্রাফ তৈরি, সম্পাদনা এবং কাস্টমাইজ করার সুযোগ দেয়। POI এর মাধ্যমে আপনি Excel ফাইলের মধ্যে গ্রাফিক্যাল ডাটা ভিজ্যুয়ালাইজেশন তৈরি করতে পারবেন, যা আপনাকে রিপোর্ট বা ডেটা বিশ্লেষণে সহায়তা করবে। এখানে আলোচনা করা হবে কিভাবে Charts এবং গ্রাফ তৈরি এবং কাস্টমাইজ করা যায় Apache POI এর মাধ্যমে।
Charts তৈরি করা
Apache POI এর XSSF বা HSSF মডিউল ব্যবহার করে আপনি Excel ফাইলে বিভিন্ন ধরনের গ্রাফ (chart) তৈরি করতে পারবেন। নিচে আলোচনা করা হবে কিভাবে একটি সাধারণ bar chart তৈরি করতে হয়।
১. Chart Creation Process
Excel ডকুমেন্টে একটি গ্রাফ তৈরি করতে, প্রথমে একটি ChartData সেট করতে হবে, তারপর একটি Chart তৈরি করতে হবে, এবং অবশেষে গ্রাফের জন্য ChartAxis নির্ধারণ করতে হবে।
উদাহরণ: Bar Chart তৈরি করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.ss.usermodel.charts.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class ChartExample {
public static void main(String[] args) throws IOException {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Chart Example");
// Data for the chart
Row row1 = sheet.createRow(0);
row1.createCell(0).setCellValue("Category");
row1.createCell(1).setCellValue("Value");
Row row2 = sheet.createRow(1);
row2.createCell(0).setCellValue("A");
row2.createCell(1).setCellValue(10);
Row row3 = sheet.createRow(2);
row3.createCell(0).setCellValue("B");
row3.createCell(1).setCellValue(20);
Row row4 = sheet.createRow(3);
row4.createCell(0).setCellValue("C");
row4.createCell(1).setCellValue(30);
// Create a Drawing object to hold the chart
XSSFDrawing drawing = (XSSFDrawing) sheet.createDrawingPatriarch();
// Define the chart
XSSFChart chart = drawing.createChart(drawing.createAnchor(0, 0, 0, 0, 5, 0, 15, 10));
// Set chart data
ChartDataFactory chartDataFactory = chart.getChartDataFactory();
CategoryChartData data = chartDataFactory.createCategoryChartData();
// Set categories and values
ChartDataSource<String> categories = DataSources.fromStringCellRange(sheet, new CellRangeAddress(1, 3, 0, 0));
ChartDataSource<Number> values = DataSources.fromNumericCellRange(sheet, new CellRangeAddress(1, 3, 1, 1));
data.addSeries(categories, values);
chart.plot(data);
// Write the chart to a file
FileOutputStream fileOut = new FileOutputStream("chart_example.xlsx");
workbook.write(fileOut);
fileOut.close();
workbook.close();
}
}
এখানে একটি সাধারণ Bar Chart তৈরি করা হয়েছে যেখানে X-axis এ Category এবং Y-axis এ Values প্রদর্শিত হচ্ছে।
Chart Customization
Apache POI এর মাধ্যমে আপনি chart এর বিভিন্ন অংশ কাস্টমাইজ করতে পারেন, যেমন:
১. Chart Title
গ্রাফের উপরের অংশে একটি Title যোগ করা যায় যা গ্রাফের বিষয় বা কন্টেন্ট বোঝাতে সাহায্য করে।
উদাহরণ:
chart.setTitleText("Sales Data");
chart.setTitleOverlay(false); // Title Overlay false means that title appears above chart
২. Chart Axes
গ্রাফের X-axis এবং Y-axis কাস্টমাইজ করা সম্ভব। আপনি axis এর লেবেল, স্কেল এবং অন্যান্য সেটিংস পরিবর্তন করতে পারেন।
উদাহরণ:
CategoryAxis xAxis = chart.getCategoryAxis();
xAxis.setTitle("Category");
ValueAxis yAxis = chart.getValueAxis();
yAxis.setTitle("Values");
৩. Legend
গ্রাফের নিচে একটি Legend যোগ করা যায় যাতে গ্রাফের বিভিন্ন সিরিজ বোঝানো যায়।
উদাহরণ:
chart.getLegend().setPosition(LegendPosition.BOTTOM);
৪. Bar Chart Styles
আপনি bar chart এর স্টাইলও কাস্টমাইজ করতে পারেন, যেমন বার গুলোর রঙ, থিকনেস এবং অন্যান্য দৃশ্যমানতা।
উদাহরণ:
BarChartSeries series = (BarChartSeries) chart.getChartSeries().get(0);
series.setBarWidth(0.3);
series.setBarColor(new XSSFColor(Color.BLUE));
Other Chart Types
Apache POI আপনাকে বিভিন্ন ধরনের চার্ট তৈরি করার সুযোগ দেয়, যেমন:
- Line Chart – ডেটার ট্রেন্ড বা প্রক্ষেপণ দেখানোর জন্য ব্যবহার হয়।
- Pie Chart – ডেটার অংশবিশেষ দেখানোর জন্য উপযুক্ত।
- Doughnut Chart – Pie Chart এর একটি ভিন্ন রূপ।
- Area Chart – ট্রেন্ড দেখতে সাহায্য করে, বিশেষত কাটা বা সময়সীমা সংক্রান্ত ডেটার জন্য।
- Scatter Chart – দুইটি ভেরিয়েবলের মধ্যে সম্পর্ক বিশ্লেষণ করতে সাহায্য করে।
এই চার্টগুলি তৈরি এবং কাস্টমাইজ করতে আপনি POI এর চার্ট API ব্যবহার করতে পারেন, যা একইভাবে ডেটা এবং কাস্টম স্টাইল সমর্থন করে।
সারাংশ
Apache POI এর মাধ্যমে আপনি Excel ডকুমেন্টে Charts এবং Graphs তৈরি এবং কাস্টমাইজ করতে পারেন। এর মাধ্যমে Bar Charts, Line Charts, Pie Charts ইত্যাদি তৈরি করা সম্ভব, এবং আপনি গ্রাফের বিভিন্ন অংশ যেমন Title, Axes, Legend এবং Chart Styles কাস্টমাইজ করতে পারেন। POI গ্রাফ এবং চার্ট তৈরি এবং কাস্টমাইজ করার জন্য একটি শক্তিশালী এবং নমনীয় প্ল্যাটফর্ম সরবরাহ করে, যা রিপোর্ট এবং ডেটা ভিজ্যুয়ালাইজেশনের জন্য খুবই উপকারী।
Apache POI লাইব্রেরি ব্যবহার করে আপনি Excel ফাইলের মধ্যে চার্ট তৈরি করতে পারেন, যেমন Bar chart, Line chart, Pie chart ইত্যাদি। POI এর মাধ্যমে আপনি Excel ফাইল তৈরি, এডিট এবং ফরম্যাট করতে পারবেন, এবং সেই ফাইলে চার্ট যোগও করতে পারবেন।
এখানে Apache POI ব্যবহার করে Excel ফাইলে বিভিন্ন ধরনের চার্ট তৈরির প্রক্রিয়া দেওয়া হলো।
১. Apache POI দিয়ে Excel এ Chart তৈরি করা
POI লাইব্রেরি ব্যবহার করে Excel ফাইলে চার্ট যোগ করার জন্য XSSFDrawing, XSSFChart এবং XDDFChart ব্যবহার করা হয়। এই ক্লাসগুলো Excel শীটে চার্ট তৈরি এবং কনফিগার করার জন্য ব্যবহৃত হয়। চার্টের ধরণ এবং ডেটা নির্ভর করে আপনি কী ধরনের চার্ট তৈরি করতে চান।
Maven ডিপেন্ডেন্সি
প্রথমে, আপনাকে Maven প্রোজেক্টে poi-ooxml ডিপেন্ডেন্সি যুক্ত করতে হবে।
<dependencies>
<!-- Apache POI (for working with Excel files and charts) -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
</dependencies>
২. Excel এ Bar Chart তৈরি করা
Bar Chart তৈরি করার জন্য আপনি XDDFChart ব্যবহার করতে পারেন, যেটি XSSFDrawing এর মাধ্যমে Excel শীটে চার্ট যোগ করে। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Bar Chart তৈরি করা হয়েছে।
উদাহরণ: Bar Chart তৈরি করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.xddf.usermodel.chart.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelBarChartExample {
public static void main(String[] args) throws IOException {
// নতুন Excel ওয়ার্কবুক তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("ChartSheet");
// ডেটা যোগ করা
Object[][] data = {
{"Month", "Sales"},
{"January", 1500},
{"February", 1800},
{"March", 1200},
{"April", 2200},
{"May", 2000}
};
int rowNum = 0;
for (Object[] rowData : data) {
Row row = sheet.createRow(rowNum++);
int colNum = 0;
for (Object cellData : rowData) {
Cell cell = row.createCell(colNum++);
if (cellData instanceof String) {
cell.setCellValue((String) cellData);
} else if (cellData instanceof Integer) {
cell.setCellValue((Integer) cellData);
}
}
}
// Drawing চিত্র তৈরি
XSSFDrawing drawing = sheet.createDrawingPatriarch();
XSSFClientAnchor anchor = new XSSFClientAnchor();
anchor.setCol1(3);
anchor.setRow1(0);
// Bar chart তৈরি
XDDFChart chart = drawing.createChart(anchor);
XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
bottomAxis.setTitle("Months");
XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
leftAxis.setTitle("Sales");
// Chart data set করা
XDDFChartData dataChart = chart.createData(ChartTypes.BAR, bottomAxis, leftAxis);
XDDFChartData.Series series = dataChart.addSeries(
new XDDFCategoryDataSource(XDDFCategoryDataSource.fromStringArray(new String[]{"January", "February", "March", "April", "May"})),
new XDDFNumericalDataSource(new double[]{1500, 1800, 1200, 2200, 2000})
);
chart.plot(dataChart);
// Excel ফাইল সেভ করা
try (FileOutputStream fileOut = new FileOutputStream("BarChartExample.xlsx")) {
workbook.write(fileOut);
}
workbook.close();
}
}
কোড ব্যাখ্যা:
- XSSFWorkbook এবং XSSFSheet ব্যবহার করে একটি নতুন Excel শীট তৈরি করা হয়।
- কিছু স্যাম্পল ডেটা যোগ করা হয় (যেমন মাস এবং সেলস ডেটা)।
- XDDFChart এবং XSSFDrawing ব্যবহার করে Bar Chart তৈরি করা হয়।
createData()ব্যবহার করে ডেটা চার্টে যোগ করা হয় এবং plot() দিয়ে চার্ট প্রদর্শন করা হয়।
৩. Excel এ Line Chart তৈরি করা
Line Chart তৈরি করতে আমরা একইভাবে XDDFChart ব্যবহার করব, তবে এখানে ChartTypes.LINE ব্যবহার করা হবে।
উদাহরণ: Line Chart তৈরি করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.xddf.usermodel.chart.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelLineChartExample {
public static void main(String[] args) throws IOException {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("ChartSheet");
// ডেটা যোগ করা
Object[][] data = {
{"Month", "Sales"},
{"January", 1200},
{"February", 1500},
{"March", 1700},
{"April", 1900},
{"May", 2100}
};
int rowNum = 0;
for (Object[] rowData : data) {
Row row = sheet.createRow(rowNum++);
int colNum = 0;
for (Object cellData : rowData) {
Cell cell = row.createCell(colNum++);
if (cellData instanceof String) {
cell.setCellValue((String) cellData);
} else if (cellData instanceof Integer) {
cell.setCellValue((Integer) cellData);
}
}
}
// Drawing তৈরি করা
XSSFDrawing drawing = sheet.createDrawingPatriarch();
XSSFClientAnchor anchor = new XSSFClientAnchor();
anchor.setCol1(3);
anchor.setRow1(0);
// Line chart তৈরি
XDDFChart chart = drawing.createChart(anchor);
XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
bottomAxis.setTitle("Months");
XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
leftAxis.setTitle("Sales");
// Chart data set করা
XDDFChartData dataChart = chart.createData(ChartTypes.LINE, bottomAxis, leftAxis);
XDDFChartData.Series series = dataChart.addSeries(
new XDDFCategoryDataSource(XDDFCategoryDataSource.fromStringArray(new String[]{"January", "February", "March", "April", "May"})),
new XDDFNumericalDataSource(new double[]{1200, 1500, 1700, 1900, 2100})
);
chart.plot(dataChart);
// Excel ফাইল সেভ করা
try (FileOutputStream fileOut = new FileOutputStream("LineChartExample.xlsx")) {
workbook.write(fileOut);
}
workbook.close();
}
}
এই উদাহরণে Line Chart তৈরি করা হয়েছে যেখানে মাসের ওপর ভিত্তি করে Sales ডেটা প্রদর্শিত হচ্ছে।
৪. Excel এ Pie Chart তৈরি করা
Pie Chart তৈরি করার জন্যও একই পদ্ধতি অনুসরণ করা হবে, তবে এখানে ChartTypes.PIE ব্যবহার করা হবে।
উদাহরণ: Pie Chart তৈরি করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.xddf.usermodel.chart.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelPieChartExample {
public static void main(String[] args) throws IOException {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("ChartSheet");
// ডেটা যোগ করা
Object[][] data = {
{"Category", "Value"},
{"A", 30},
{"B", 20},
{"C", 50}
};
int rowNum = 0;
for (Object[] rowData : data) {
Row row = sheet.createRow(rowNum++);
int colNum = 0;
for (Object cellData : rowData) {
Cell cell = row.createCell(colNum++);
if (cellData instanceof String) {
cell.setCellValue((String) cellData);
} else if (cellData instanceof Integer) {
cell.setCellValue((Integer) cellData);
}
}
}
// Drawing তৈরি করা
XSSFDrawing drawing = sheet.createDrawingPatriarch();
XSSFClientAnchor anchor = new XSSFClientAnchor();
anchor.setCol1(3);
anchor.setRow1(0);
// Pie chart তৈরি
XDDFChart chart = drawing.createChart(anchor);
chart.getCTChart().getPlotArea().addNewPieChart();
// Chart data set করা XDDFChartData dataChart = chart.createData(ChartTypes.PIE, null, null); XDDFChartData.Series series = dataChart.addSeries( new XDDFCategoryDataSource(XDDFCategoryDataSource.fromStringArray(new String[]{"A", "B", "C}"))), new XDDFNumericalDataSource(new double[]{30, 20, 50}) );
chart.plot(dataChart);
// Excel ফাইল সেভ করা
try (FileOutputStream fileOut = new FileOutputStream("PieChartExample.xlsx")) {
workbook.write(fileOut);
}
workbook.close();
}
}
---
- **Apache POI** ব্যবহার করে Excel ফাইলে বিভিন্ন ধরনের চার্ট (Bar, Line, Pie) তৈরি করা সম্ভব।
- **XDDFChart** এবং **XSSFDrawing** এর মাধ্যমে Excel শীটে চার্ট যোগ করা হয়।
- POI লাইব্রেরি **Bar**, **Line**, এবং **Pie** চার্টের জন্য প্রয়োজনীয় ফাংশনালিটি প্রদান করে, যা ডেটা visualization এর জন্য কার্যকরী।
Apache POI ব্যবহার করে আপনি Excel ফাইলের মধ্যে Chart (চার্ট) তৈরি করতে পারেন। চার্টের ডেটা কনফিগার করার জন্য আপনাকে দুটি প্রধান কম্পোনেন্টের সাথে কাজ করতে হবে:
- ChartData - যা চার্টের ডেটা নির্ধারণ করে।
- Chart - যা ওই ডেটার ভিত্তিতে চার্ট তৈরি করে।
এই লেখায়, আমরা দেখব কিভাবে Apache POI ব্যবহার করে Chart Data কনফিগার করা যায় এবং একটি Chart তৈরি করা যায়।
১. Chart Data তৈরি করা
ChartData তৈরি করতে হলে আপনাকে প্রথমে Excel শিটের মধ্যে ডেটা তৈরি করতে হবে, তারপর সেই ডেটা থেকে চার্টের জন্য ডেটা সিরিজ এবং সেল রেঞ্জ নির্ধারণ করতে হবে।
উদাহরণ: Chart Data কনফিগার করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFPicture;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.usermodel.charts.XSSFChart;
import org.apache.poi.xssf.usermodel.charts.XSSFCategoryAxis;
import org.apache.poi.xssf.usermodel.charts.XSSFXYChart;
import java.io.FileOutputStream;
import java.io.IOException;
public class ChartDataExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// শীট তৈরি
Sheet sheet = workbook.createSheet("Chart Data");
// ডেটা রো তৈরি
Row row1 = sheet.createRow(0);
row1.createCell(0).setCellValue("Month");
row1.createCell(1).setCellValue("Sales");
Row row2 = sheet.createRow(1);
row2.createCell(0).setCellValue("January");
row2.createCell(1).setCellValue(500);
Row row3 = sheet.createRow(2);
row3.createCell(0).setCellValue("February");
row3.createCell(1).setCellValue(700);
Row row4 = sheet.createRow(3);
row4.createCell(0).setCellValue("March");
row4.createCell(1).setCellValue(600);
Row row5 = sheet.createRow(4);
row5.createCell(0).setCellValue("April");
row5.createCell(1).setCellValue(800);
// চার্ট তৈরি
Drawing<?> drawing = sheet.createDrawingPatriarch();
// ChartData তৈরি
XSSFRichTextString chartTitle = new XSSFRichTextString("Monthly Sales");
// চার্ট রেঞ্জ উল্লেখ
AreaReference chartDataRange = new AreaReference("A1:B5", workbook.getSpreadsheetVersion());
// চার্ট অবস্থান এবং আকার সেট করা
XSSFChart chart = (XSSFChart) drawing.createChart(new ClientAnchor());
// চার্ট টাইপ এবং সিরিজ কনফিগার করা
chart.plot(chartDataRange);
// X এবং Y অক্ষ তৈরি
XSSFCategoryAxis xAxis = (XSSFCategoryAxis) chart.getAxis(AxisPosition.BOTTOM);
xAxis.setCategoryAxisTitle("Months");
// Y অক্ষ সেট করা
chart.getAxis(AxisPosition.LEFT).setTitle("Sales");
// চার্ট সেটিংস
chart.getCTChart().getPlotArea().getBarChartArray(0).getGrouping().setVal(STBarGrouping.STANDARD);
chart.getCTChart().getPlotArea().getBarChartArray(0).getVaryColors().setVal(true);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("chartExample.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং চার্ট ডেটা কনফিগার করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- শীট এবং রো তৈরি: প্রথমে Excel শীটে ডেটা যোগ করা হয়েছে (যেমন, মাস এবং বিক্রয়)। এই ডেটা পরে চার্টের ডেটা হিসেবে ব্যবহৃত হবে।
- Drawing Object তৈরি: Drawing অবজেক্ট ব্যবহার করে আমরা চার্ট তৈরি করি।
- ChartData রেঞ্জ: AreaReference ব্যবহার করে চার্টের ডেটা রেঞ্জ নির্ধারণ করা হয় (যেমন, "A1:B5")।
- ChartObject তৈরি: XSSFChart ব্যবহার করে চার্ট তৈরি করা হয়েছে, যেখানে রেঞ্জ অনুযায়ী ডেটা প্লট করা হয়।
- Axis Configuration: X এবং Y অক্ষ কনফিগার করা হয়েছে (যেমন, মাস এবং বিক্রয়ের জন্য অক্ষের নাম দেওয়া হয়েছে)।
- Chart Formatting: চার্টের ধরনের (এখানে বারের চার্ট) কাস্টমাইজেশন এবং বিভিন্ন সেটিংস করা হয়েছে।
২. ChartData কনফিগারেশন টাইপ নির্ধারণ করা
যখন আপনি Chart তৈরি করছেন, তখন আপনাকে ChartType নির্ধারণ করতে হবে। Apache POI বিভিন্ন ধরনের চার্ট সমর্থন করে, যেমন:
- Bar Chart
- Line Chart
- Pie Chart
- XY Chart
- Area Chart
এই উদাহরণে একটি XY Chart তৈরি করা হয়েছে, তবে আপনি চাইলে অন্য যেকোনো চার্ট টাইপ ব্যবহার করতে পারেন।
উদাহরণ: Line Chart কনফিগার করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.charts.XSSFChart;
import org.apache.poi.xssf.usermodel.charts.XSSFFont;
import org.apache.poi.xssf.usermodel.charts.XSSFXYChart;
import java.io.FileOutputStream;
import java.io.IOException;
public class LineChartExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// শীট তৈরি
Sheet sheet = workbook.createSheet("Line Chart Data");
// ডেটা রো তৈরি
Row row1 = sheet.createRow(0);
row1.createCell(0).setCellValue("Month");
row1.createCell(1).setCellValue("Sales");
Row row2 = sheet.createRow(1);
row2.createCell(0).setCellValue("January");
row2.createCell(1).setCellValue(500);
Row row3 = sheet.createRow(2);
row3.createCell(0).setCellValue("February");
row3.createCell(1).setCellValue(700);
Row row4 = sheet.createRow(3);
row4.createCell(0).setCellValue("March");
row4.createCell(1).setCellValue(600);
Row row5 = sheet.createRow(4);
row5.createCell(0).setCellValue("April");
row5.createCell(1).setCellValue(800);
// চার্ট তৈরি
Drawing<?> drawing = sheet.createDrawingPatriarch();
// ChartData তৈরি
XSSFXYChart chart = (XSSFXYChart) drawing.createChart(new ClientAnchor());
// চার্ট ডেটা কনফিগার করা
chart.plot(new AreaReference("A1:B5", workbook.getSpreadsheetVersion()));
// X অক্ষ (Month) কনফিগার করা
XSSFCategoryAxis xAxis = (XSSFCategoryAxis) chart.getAxis(AxisPosition.BOTTOM);
xAxis.setCategoryAxisTitle("Months");
// Y অক্ষ (Sales) কনফিগার করা
chart.getAxis(AxisPosition.LEFT).setTitle("Sales");
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("lineChartExample.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং Line Chart কনফিগার করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- XSSFXYChart: এখানে XY Chart ব্যবহার করা হয়েছে, তবে আপনি চাইলে Line Chart বা অন্য কোনো চার্ট টাইপ ব্যবহার করতে পারেন।
- AreaReference: সেল রেঞ্জ (A1:B5) ব্যবহার করে ডেটা সিলেক্ট করা হয়েছে।
৩. Chart Style কাস্টমাইজ করা
একবার চার্ট তৈরি হলে, আপনি তার স্টাইল কাস্টমাইজ করতে পারেন। যেমন, চার্টের রঙ, লাইন স্টাইল, এবং ডাটা সিরিজের ফরম্যাট সেট করা যায়।
উদাহরণ: Chart Style কাস্টমাইজেশন
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.xssf.usermodel.charts.XSSFChart;
import java.io.FileOutputStream;
import java.io.IOException;
public class ChartStyleCustomization {
public static void main(String[] args
) throws IOException { // XSSFWorkbook অবজেক্ট তৈরি XSSFWorkbook workbook = new XSSFWorkbook();
// শীট তৈরি
Sheet sheet = workbook.createSheet("Styled Chart Data");
// ডেটা রো তৈরি
Row row1 = sheet.createRow(0);
row1.createCell(0).setCellValue("Month");
row1.createCell(1).setCellValue("Sales");
Row row2 = sheet.createRow(1);
row2.createCell(0).setCellValue("January");
row2.createCell(1).setCellValue(500);
Row row3 = sheet.createRow(2);
row3.createCell(0).setCellValue("February");
row3.createCell(1).setCellValue(700);
Row row4 = sheet.createRow(3);
row4.createCell(0).setCellValue("March");
row4.createCell(1).setCellValue(600);
Row row5 = sheet.createRow(4);
row5.createCell(0).setCellValue("April");
row5.createCell(1).setCellValue(800);
// চার্ট তৈরি
Drawing<?> drawing = sheet.createDrawingPatriarch();
// ChartData তৈরি
XSSFChart chart = (XSSFChart) drawing.createChart(new ClientAnchor());
// চার্টের ডেটা সিলেক্ট করা
chart.plot(new AreaReference("A1:B5", workbook.getSpreadsheetVersion()));
// স্টাইল কাস্টমাইজেশন
chart.getCTChart().getPlotArea().getBarChartArray(0).getGrouping().setVal(STBarGrouping.STANDARD);
chart.getCTChart().getPlotArea().getBarChartArray(0).getVaryColors().setVal(true);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("styledChartExample.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং Chart Style কাস্টমাইজ করা হয়েছে!");
}
}
#### কোড ব্যাখ্যা:
- **getVaryColors()**: চার্টে বিভিন্ন রঙের ব্যবহার কাস্টমাইজ করা হয়েছে।
- **getGrouping()**: চার্টের গ্রুপিং ধরনের কাস্টমাইজেশন করা হয়েছে।
---
### সারাংশ
**Apache POI** ব্যবহার করে আপনি **Excel** ফাইলে **Chart Data** কনফিগার করতে পারেন এবং বিভিন্ন ধরনের চার্ট (যেমন Bar, Line, Pie, XY) তৈরি করতে পারেন। চার্টের জন্য ডেটা কনফিগারেশন, চার্ট টাইপ নির্ধারণ এবং স্টাইল কাস্টমাইজেশন সহজেই করা সম্ভব। **AreaReference** ব্যবহার করে চার্টের ডেটা রেঞ্জ নির্ধারণ এবং **XSSFChart** ব্যবহার করে চার্টের প্রপার্টি এবং স্টাইল কাস্টমাইজ করা যায়।
Apache POI লাইব্রেরি ব্যবহার করে আপনি Excel ফাইলের মধ্যে Chart (চার্ট) তৈরি এবং কাস্টমাইজ করতে পারেন। Chart formatting এবং style পরিবর্তন করে, আপনি আপনার ডেটাকে আরও স্পষ্ট এবং আকর্ষণীয়ভাবে উপস্থাপন করতে পারবেন। এটির সাহায্যে আপনি বিভিন্ন ধরনের গ্রাফ এবং চার্ট, যেমন bar charts, line charts, pie charts, ইত্যাদি তৈরি করতে পারেন এবং তাদের ভিজ্যুয়াল স্টাইল পরিবর্তন করতে পারবেন।
১. Chart তৈরি করা
প্রথমে, একটি chart তৈরি করতে হবে। Apache POI এর XSSFRichTextString, XSSFChart ক্লাসের মাধ্যমে গ্রাফ বা চার্ট তৈরি করা যায়। এখানে একটি উদাহরণ দেওয়া হল যে কিভাবে একটি সাধারণ chart তৈরি করা যায়।
উদাহরণ: চার্ট তৈরি করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.apache.poi.xssf.usermodel.XSSFChart;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import java.io.FileOutputStream;
import java.io.IOException;
public class ChartExample {
public static void main(String[] args) throws IOException {
Workbook workbook = new XSSFWorkbook(); // Create new workbook
Sheet sheet = workbook.createSheet("Chart Sheet");
// Data for the chart
Row row = sheet.createRow(0);
row.createCell(0).setCellValue("Category 1");
row.createCell(1).setCellValue(5);
row.createCell(2).setCellValue(10);
row = sheet.createRow(1);
row.createCell(0).setCellValue("Category 2");
row.createCell(1).setCellValue(7);
row.createCell(2).setCellValue(13);
// Create a chart
XSSFChart chart = (XSSFChart) sheet.createDrawingPatriarch().createChart(0, 0);
// Set chart style and add data here (chart configuration code will go here)
// Save the file
try (FileOutputStream fileOut = new FileOutputStream("chart_example.xlsx")) {
workbook.write(fileOut);
}
workbook.close();
}
}
এই কোডটিতে একটি সাধারণ chart তৈরি করা হয়েছে যা এক্সেল শিটে data দিয়ে পূর্ণ হবে।
২. Chart Formatting এবং Style পরিবর্তন
Chart formatting এবং style পরিবর্তন করার জন্য XSSFChart এবং অন্যান্য চার্ট কনফিগারেশন ক্লাস ব্যবহার করা হয়। নিচে কিছু প্রধান formatting এবং styling কনফিগারেশন আলোচনা করা হল।
১. Chart Title পরিবর্তন
চার্টের শিরোনাম পরিবর্তন করতে setTitle() মেথড ব্যবহার করা হয়। এটি খুবই সহজ, এবং শিরোনাম টেক্সটের ফন্ট এবং সাইজও কাস্টমাইজ করা যেতে পারে।
chart.setTitleText("Sales Data");
chart.setTitleFont(new XSSFFont("Arial", 12));
২. Chart Background Color পরিবর্তন
চার্টের ব্যাকগ্রাউন্ডের রঙ পরিবর্তন করতে setPlotAreaFill() মেথড ব্যবহার করা হয়। আপনি এখানে RGB বা IndexedColor এর মাধ্যমে রঙ কাস্টমাইজ করতে পারেন।
chart.getChartArea().setFillColor(new XSSFColor(Color.YELLOW));
৩. Legend (লিজেন্ড) স্টাইল পরিবর্তন
চার্টের Legend সেটিং পরিবর্তন করতে getLegend() মেথড ব্যবহার করতে হয়। আপনি Legend এর অবস্থান, অ্যালাইনমেন্ট এবং অন্যান্য স্টাইল কাস্টমাইজ করতে পারবেন।
chart.getLegend().setPosition(LegendPosition.BOTTOM);
chart.getLegend().setFont(new XSSFFont("Arial", 10));
৪. Axis Formatting (অ্যাক্সিস ফরম্যাটিং)
চার্টের X-axis এবং Y-axis ফরম্যাটিং পরিবর্তন করতে, তাদের setTitle(), setMajorGridlines(), setMinorGridlines(), এবং setLabelFont() ফাংশন ব্যবহার করা হয়।
chart.getCategoryAxis().setTitleText("Categories");
chart.getValueAxis().setTitleText("Sales");
chart.getCategoryAxis().setTitleFont(new XSSFFont("Arial", 10));
chart.getValueAxis().setTitleFont(new XSSFFont("Arial", 10));
৫. Data Series Formatting
চার্টে ব্যবহৃত data series গুলোর স্টাইল পরিবর্তন করার জন্য, আপনি তাদের fill, line style, এবং marker সেটিং পরিবর্তন করতে পারেন। এটি গ্রাফের লাইন বা বারগুলোর রঙ এবং স্টাইল পরিবর্তন করতে সহায়ক।
chart.getSeries().get(0).getFill().setColor(new XSSFColor(Color.BLUE));
chart.getSeries().get(1).getLine().setStyle(LineStyle.SOLID);
৩. Chart Type পরিবর্তন
আপনি একাধিক ধরনের চার্ট তৈরি করতে পারেন, যেমন Bar Chart, Line Chart, Pie Chart ইত্যাদি। XSSFChart ক্লাসের getChartType() বা setChartType() মেথড ব্যবহার করে এই পরিবর্তন করা যায়।
উদাহরণ: Bar Chart তৈরি করা
chart.getChartType().setChartType(ChartType.BAR);
সারাংশ
Apache POI লাইব্রেরি ব্যবহার করে Excel ফাইলে charts তৈরি এবং কাস্টমাইজ করা যায়। আপনি সহজেই চার্টের শিরোনাম, ব্যাকগ্রাউন্ড, লিজেন্ড, অ্যাক্সিস, এবং ডেটা সিরিজের স্টাইল পরিবর্তন করতে পারেন। এছাড়া, আপনি chart types পরিবর্তন করে bar charts, line charts, pie charts ইত্যাদি তৈরি করতে পারেন এবং তাদের উপস্থাপনা এবং স্টাইল কাস্টমাইজ করতে পারেন।
এই কাস্টমাইজেশন এবং ফরম্যাটিং আপনার চার্টের ভিজ্যুয়াল প্রভাব উন্নত করবে এবং ডেটাকে আরও স্পষ্টভাবে উপস্থাপন করতে সাহায্য করবে।
Apache POI লাইব্রেরি ব্যবহার করে আপনি Excel ফাইলে Chart তৈরি করতে পারেন। Charts হল একটি চমৎকার উপায়, যার মাধ্যমে আপনি ডেটাকে ভিজ্যুয়ালাইজ করতে পারেন, যেমন বার চার্ট, লাইনে চার্ট, পাই চার্ট ইত্যাদি। এখানে আমরা দেখব কীভাবে Embedded এবং Standalone Charts তৈরি করা যায়।
1. Embedded Chart তৈরি করা
Embedded Chart হল এমন একটি চার্ট যা Excel ফাইলে ডেটার সাথে একীভূত থাকে, অর্থাৎ চার্টটি একটি নির্দিষ্ট Sheet এর মধ্যে তৈরি হয়। এর জন্য XSSFSheet.createDrawingPatriarch() এবং XSSFDrawing.createChart() ব্যবহার করা হয়।
উদাহরণ: Embedded Chart তৈরি করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.ss.util.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class EmbeddedChartExample {
public static void main(String[] args) throws IOException {
// নতুন একটি Workbook তৈরি করা
Workbook workbook = new XSSFWorkbook();
// নতুন Sheet তৈরি করা
Sheet sheet = workbook.createSheet("Sheet1");
// কিছু ডেটা যোগ করা
Object[][] data = {
{"Year", "Sales"},
{2019, 1000},
{2020, 1500},
{2021, 2000},
{2022, 2500}
};
// ডেটা সেল এ ইনপুট করা
int rowNum = 0;
for (Object[] rowData : data) {
Row row = sheet.createRow(rowNum++);
int colNum = 0;
for (Object cellData : rowData) {
Cell cell = row.createCell(colNum++);
if (cellData instanceof String) {
cell.setCellValue((String) cellData);
} else if (cellData instanceof Integer) {
cell.setCellValue((Integer) cellData);
}
}
}
// DrawingPatriarch তৈরি করা
XSSFDrawing drawing = (XSSFDrawing) sheet.createDrawingPatriarch();
// Chart তৈরি করা
XSSFChart chart = drawing.createChart(new XSSFClientAnchor(0, 0, 0, 0, (short) 5, 5, (short) 15, 25));
// Chart Data Set করা
ChartDataFactory factory = chart.getChartDataFactory();
CategoryChartData chartData = factory.createCategoryChartData();
CategoryChartSeries salesSeries = chartData.addSeries(new CategoryAxisData(new String[]{"2019", "2020", "2021", "2022"}), new NumericAxisData(new double[]{1000, 1500, 2000, 2500}));
chart.plot(chartData);
// Excel ফাইল সংরক্ষণ করা
try (FileOutputStream fileOut = new FileOutputStream("embedded_chart.xlsx")) {
workbook.write(fileOut);
}
// Workbook বন্ধ করা
workbook.close();
}
}
এখানে, আমরা Sheet1 এ কিছু সেল ডেটা যোগ করেছি এবং তারপরে একটি Embedded Bar Chart তৈরি করেছি। এটি Sheet1 এর মধ্যে অন্তর্ভুক্ত থাকবে এবং ওই শিটেই চার্টটি প্রদর্শিত হবে।
2. Standalone Chart তৈরি করা
Standalone Chart হল একটি চার্ট যা নির্দিষ্ট Chart Sheet হিসেবে তৈরি হয় এবং এটি Excel ফাইলের একটি আলাদা শিটে সংরক্ষিত থাকে। Chart Sheet এ তৈরি করা চার্টকে Standalone Chart বলা হয়, যেটি ডেটা শিটের বাইরে থাকে এবং মূল ডেটা থেকে আলাদা।
উদাহরণ: Standalone Chart তৈরি করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.ss.util.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class StandaloneChartExample {
public static void main(String[] args) throws IOException {
// নতুন একটি Workbook তৈরি করা
Workbook workbook = new XSSFWorkbook();
// Data Sheet তৈরি করা
Sheet sheet = workbook.createSheet("Data");
// কিছু ডেটা যোগ করা
Object[][] data = {
{"Year", "Sales"},
{2019, 1000},
{2020, 1500},
{2021, 2000},
{2022, 2500}
};
// ডেটা সেল এ ইনপুট করা
int rowNum = 0;
for (Object[] rowData : data) {
Row row = sheet.createRow(rowNum++);
int colNum = 0;
for (Object cellData : rowData) {
Cell cell = row.createCell(colNum++);
if (cellData instanceof String) {
cell.setCellValue((String) cellData);
} else if (cellData instanceof Integer) {
cell.setCellValue((Integer) cellData);
}
}
}
// Chart Sheet তৈরি করা
XSSFSheet chartSheet = workbook.createSheet("Chart");
// Chart তৈরি করা
XSSFDrawing drawing = (XSSFDrawing) chartSheet.createDrawingPatriarch();
XSSFChart chart = drawing.createChart(new XSSFClientAnchor(0, 0, 0, 0, (short) 0, 0, (short) 15, 30));
// Chart Data Set করা
ChartDataFactory factory = chart.getChartDataFactory();
CategoryChartData chartData = factory.createCategoryChartData();
CategoryChartSeries salesSeries = chartData.addSeries(new CategoryAxisData(new String[]{"2019", "2020", "2021", "2022"}), new NumericAxisData(new double[]{1000, 1500, 2000, 2500}));
chart.plot(chartData);
// Excel ফাইল সংরক্ষণ করা
try (FileOutputStream fileOut = new FileOutputStream("standalone_chart.xlsx")) {
workbook.write(fileOut);
}
// Workbook বন্ধ করা
workbook.close();
}
}
এখানে, আমরা Data শিটে কিছু ডেটা ইনপুট করেছি এবং একটি আলাদা Chart শিট তৈরি করেছি, যেখানে Standalone Chart রাখা হয়েছে। এটি আলাদাভাবে প্রদর্শিত হবে এবং এটি অন্য শিট থেকে পৃথক থাকবে।
3. Chart Types
আপনি যে ধরনের চার্ট তৈরি করতে চান, তা নির্ভর করবে আপনার প্রয়োজনের উপর। কিছু সাধারণ chart types:
- Bar Chart: ডেটা তুলনা করতে।
- Line Chart: ডেটার পরিবর্তন বা প্রবণতা দেখাতে।
- Pie Chart: একটি নির্দিষ্ট ডেটার সমষ্টি বা অনুপাত দেখাতে।
- Area Chart: সমষ্টিগত প্রবণতা দেখাতে।
- Scatter Chart: দুটি ভেরিয়েবলের সম্পর্ক দেখাতে।
এছাড়া, Apache POI আরও অন্যান্য chart types সাপোর্ট করে, যেমন Doughnut, Radar, এবং Surface চার্ট।
সারাংশ
Apache POI ব্যবহার করে আপনি সহজেই Excel ফাইলের মধ্যে Embedded এবং Standalone চার্ট তৈরি করতে পারেন। Embedded Chart একটি নির্দিষ্ট শিটে ডেটার সাথে অন্তর্ভুক্ত থাকে, যেখানে Standalone Chart একটি পৃথক শিটে তৈরি হয়। আপনি বিভিন্ন ধরনের charts যেমন Bar Chart, Line Chart, Pie Chart, এবং আরও অন্যান্য প্রকারের চার্ট তৈরি করতে পারবেন, যা ডেটাকে ভিজ্যুয়ালাইজ করার জন্য খুবই কার্যকর।
Read more